En ASP.NET Web Forms, puedo llamar al método de página usando la solicitud de "publicación" de Ajax. Pero no puedo llamar al método de página usando "obtener solicitud".
En este caso, ¿es posible llamar a los métodos de página mediante la solicitud "Obtener".? ¿Podría proporcionar alguna sugerencia para esto? Código de ejemplo para el método de página:
[WebMethod] public static string GetData() { return "test"; }Como @vc mencionó en los comentarios, deberá utilizar ScriptMethodAttribute y WebMethod porque desea que su solicitud sea GET y no POST , así que cambie su código de la siguiente manera:
[WebMethod] [ScriptMethod(UseHttpGet = true)] public static string GetData() { return "test"; }Y en el marcado puedes hacer
function ShowTestMessage() { $.ajax({ type: "GET", url: "YourPage.aspx/GetData", data: {}, contentType: "application/json; charset=utf-8", dataType: "json", success: OnSuccess, failure: function (response) { alert(response.d); } }); } function OnSuccess(response) { alert(response.d); } <input id="ButtonId" type="button" value="Show Message" onclick = "ShowTestMessage()" />No olvides agregar la siguiente referencia
using System.Web.Script.Services; using System.Web.Services;¿Solicitudes Ajax GET a un método de página ASP.NET?
Supongo que el enlace sería útil. Dice Por razones de seguridad, los métodos de página ASP.Net AJAX solo admiten solicitudes POST.
Intenté decorar el método con [ScriptMethod(UseHttpGet = true)] pero aún así la solicitud de obtención no se acierta.
También el documento msdn para [ScriptMethod(UseHttpGet = true)] comillas Cuando esta propiedad se establece en true, el código de proxy del cliente usa HTTP GET para llamar al servicio web. No estoy seguro si funciona para un método web en formularios web.
PD : Bueno, parece funcionar con las versiones más nuevas de Jquery 2.2.2. Además, asegúrese de enviar datos a través de cadenas de consulta que no utilicen el cuerpo de la solicitud como en el método POST.